package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.UserBean;

import java.lang.reflect.Array;

/**
 * 用户业务方法
 */
public interface IUserService {
    public UserBean findByNameBean(String name);

    /**
     * 登录
     * @param userName  用户名
     * @param pwd   密码
     * @return  通过用户名密码登录查询。
     * 如果登录成功，则记录登录日志，同时需要查询该用户拥有的权限集合。
     */
    UserBean login(String userName,String pwd);

    /**
     * 当前登录用户修改密码，
     * 用户id从session中得到
     * @param newPwd    新密码
     */
    /**
     * 当前登录用户修改密码，
     * @param id    当前登录用户Id
     * @param newPwd    新密码
     */
    void updatePwd(Integer id, String newPwd);




    /**
     * 动态分页查询用户
     * 根据用户名动态分页查询用户表
     * @param pageNO    页码
     * @param name  用户名称
     * @return  用户分页对象
     */
    IPage<UserBean> findByItem(Integer pageNO,String name);


    /**  通 过用户名查询用户是否存在
     *  添加用户时，用户名不能重复
     * @param name  用户名
     * @return  用户对象
     */
    /**  通 过用户名查询用户是否存在
     *  添加用户时，用户名不能重复
     * @param name  用户名
     * @return  存在返回true，不存在返回false
     */
    boolean findByName(String name);
    /**
     * 添加用户
     * 添加用户信息，同时添加该用户拥有的角色信息（中间表）
     * @param userBean  用户对象
     * @param role  角色 ID数组
     */
    void add(UserBean userBean, int [] role);

    /**
     * 删除用户，同时删除用户拥有的角色信息。
     * 先删除中间表该用户的角色，再删除用户
     * @param id    用户ID
     */
    void del(Integer id);



    /** 查询用户之用户校色。
     *  通过id查询用户信息，同时查询该用户拥有的角色集合，和权限集合
     * @param id    用户id
     * @return  用户对象
     */
    UserBean findById(Integer id);




    /** 通过用户id修改用户的角色权限
     *  先通过用户id删除中间表相关信息，再添加新的角色信息
     * @param id    用户ID，
     * @param arrays   用户新角色id数组
     */
    void updateInfo(Integer id,int [] arrays);

}
